﻿////class Solution
////{
////public:
////	int findLength(vector<int>& nums1, vector<int>& nums2)
////	{
////		// 1. 创建 dp 表
////		// 2. 初始化
////		// 3. 填表
////		// 4. 返回值
////		int m = nums1.size(), n = nums2.size();
////		vector<vector<int>> dp(m + 1, vector<int>(n + 1));
////		int ret = 0;
////		for (int i = 1; i <= m; i++)
////			for (int j = 1; j <= n; j++)
////				if (nums1[i - 1] == nums2[j - 1]) // ⼀遍填表，⼀遍更新最⼤值
////					dp[i][j] = dp[i - 1][j - 1] + 1, ret = max(ret, dp[i][j]);
////		return ret;
////	}
////};
//class Solution
//{
//public:
//	int minimumDeleteSum(string s1, string s2)
//	{
//		// 1. 创建 dp 表
//		// 2. 初始化
//		// 3. 填表
//		// 4. 返回值
//		int m = s1.size(), n = s2.size();
//		vector<vector<int>> dp(m + 1, vector<int>(n + 1));
//		for (int i = 1; i <= m; i++)
//			for (int j = 1; j <= n; j++)
//			{
//				dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);
//				if (s1[i - 1] == s2[j - 1])
//					dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + s1[i - 1]);
//			}
//			int sum = 0; // 统计元素和
//		for (auto s : s1) sum += s;
//		for (auto s : s2) sum += s;
//		return sum - dp[m][n] - dp[m][n];
//	}
//};